﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sistema.Dominio;
using System.Collections;

namespace Sistema.WF.Componentes.UserControls
{
    public partial class R2DadosPessoais : UserControl
    { 
        public R2DadosPessoais()
        {
            InitializeComponent();

            this.CBO_EstadoCivil.DataSource = new DictionaryEntry[]
                {
                    new DictionaryEntry(enumEstadoCivil.Casado,enumEstadoCivil.Casado.ToString()),
                    new DictionaryEntry(enumEstadoCivil.Solteiro,enumEstadoCivil.Solteiro.ToString()),
                    new DictionaryEntry(enumEstadoCivil.Viuvo,enumEstadoCivil.Viuvo.ToString()),
                    new DictionaryEntry(enumEstadoCivil.Outros,enumEstadoCivil.Outros.ToString()),
                };
            this.CBO_EstadoCivil.DisplayMember = "value";
            this.CBO_EstadoCivil.ValueMember = "key";
            this.CBO_Sexo.DataSource = new DictionaryEntry[]
                {
                    new DictionaryEntry(enumSexo.Masculino, enumSexo.Masculino.ToString()),
                    new DictionaryEntry(enumSexo.Feminino,enumSexo.Feminino.ToString()),
                };
            this.CBO_Sexo.DisplayMember = "value";
            this.CBO_Sexo.ValueMember = "key";
        }

        #region Get's And Set's
        
        /// <summary>
        /// Atribui e retorna os campos deste controle, sempre por um DadosPessoaisVO.
        /// <exception cref="VOException"></exception>
        /// </summary>
        public DadosPessoaFisicaVO DadosPessoais
        {
            get { return RecolheDados(); }
            set { CarregaDados(value); }
        }

        /// <summary>
        /// Retorna os valores dos campos deste controle.
        /// </summary>
        /// <returns>DadosPessoaisVO contendo todos os campos.</returns>
        /// <exception cref="VOException"></exception>
        /// <summary>
        /// Retorna os valores dos campos deste controle.
        /// </summary>
        /// <returns>DadosPessoaisVO contendo todos os campos.</returns>
        /// <exception cref="VOException"></exception>
        private DadosPessoaFisicaVO RecolheDados()
        {
            DadosPessoaFisicaVO retorno = new DadosPessoaFisicaVO();
            retorno.Nome = TXT_Nome.Text;
            retorno.Sobrenome = TXT_Sobrenome.Text;
            retorno.Cpf = TXT_CPF.Text;
            retorno.Rg = TXT_RG.Text;
            retorno.DataEmissaoRg = DTP_DataEmissao.Value;
            retorno.OrgaoEmissorRg = TXT_OrgaoEmissor.Text;
            retorno.Sexo = (enumSexo)CBO_Sexo.SelectedValue; // (enumSexo)Enum.Parse(typeof(enumSexo), CBO_Sexo.Text);
            retorno.EstadoCivil = (enumEstadoCivil)CBO_EstadoCivil.SelectedValue;//Enum.Parse(typeof(enumEstadoCivil), CBO_EstadoCivil.Text);
            retorno.Nacionalidade = TXT_Nacionalidade.Text;
            retorno.DataNascimento = DTP_DataNascimento.Value;

            return retorno;
        }

        /// <summary>
        /// Carrega os campos deste controle a partir de um DadosPessoaisVO.
        /// </summary>
        /// <param name="value">Objeto contendo todos os valores desejados.</param>
        private void CarregaDados(DadosPessoaFisicaVO value)
        {
            TXT_Nome.Text = value.Nome;
            TXT_Sobrenome.Text = value.Sobrenome;
            TXT_CPF.Text = value.Cpf;
            TXT_RG.Text = value.Rg;
            DTP_DataEmissao.Text = value.DataEmissaoRg.ToString();
            TXT_OrgaoEmissor.Text = value.OrgaoEmissorRg;
            CBO_Sexo.SelectedIndex = (int) value.Sexo;
            CBO_EstadoCivil.SelectedIndex = (int)value.EstadoCivil;
            TXT_Nacionalidade.Text = value.Nacionalidade;
            DTP_DataNascimento.Value = value.DataNascimento;
        }

        public void LimparCampos()
        {
            TXT_Nome.Clear();
            TXT_Sobrenome.Clear();
            TXT_CPF.Clear();
            TXT_RG.Clear();
            DTP_DataEmissao.Text = "";
            TXT_OrgaoEmissor.Clear();
            CBO_Sexo.SelectedIndex = 0;
            CBO_EstadoCivil.SelectedIndex = 0;
            TXT_Nacionalidade.Clear();
            DTP_DataNascimento.Value = System.DateTime.Today;
        }
        #endregion

        #region Validações


 

        private void R2DadosPessoais_Enter(object sender, EventArgs e)
        {
            TXT_Nome.Focus();
        }

        private void TXT_CPF_Leave(object sender, EventArgs e)
        {
        }
        #endregion
    }
}
